// 全局变量
let currentOperation = '';

// 页面加载完成后初始化
document.addEventListener('DOMContentLoaded', function() {
    // 监听输入框变化，更新字符计数
    const inputData = document.getElementById('inputData');
    const outputData = document.getElementById('outputData');
    
    inputData.addEventListener('input', updateInputCharCount);
    outputData.addEventListener('input', updateOutputCharCount);
    
    // 初始化字符计数
    updateInputCharCount();
    updateOutputCharCount();
    
    // 点击模态框外部关闭
    document.getElementById('paramModal').addEventListener('click', function(e) {
        if (e.target === this) {
            closeModal();
        }
    });
});

// 更新输入字符计数
function updateInputCharCount() {
    const input = document.getElementById('inputData').value;
    const count = input.length;
    document.getElementById('inputCharCount').textContent = `总字符数: ${count}`;
}

// 更新输出字符计数
function updateOutputCharCount() {
    const output = document.getElementById('outputData').value;
    const count = output.length;
    document.getElementById('outputCharCount').textContent = `总字符数: ${count}`;
}

// 执行操作
function performOperation(operation) {
    const input = document.getElementById('inputData').value;
    
    if (!input.trim()) {
        showToast('请先输入要处理的数据', 'error');
        return;
    }
    
    // 发送请求
    fetch('/iotProtocolToolbox/api/convert', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
        },
        body: `operation=${operation}&input=${encodeURIComponent(input)}`
    })
    .then(response => response.json())
    .then(data => {
        if (data.success) {
            document.getElementById('outputData').value = data.result;
            updateOutputCharCount();
            showToast('操作成功', 'success');
        } else {
            showToast(data.error || '操作失败', 'error');
        }
    })
    .catch(error => {
        showToast('网络错误: ' + error.message, 'error');
    });
}

// 显示日期时间转时间戳模态框
function showDateTimeModal() {
    currentOperation = 'dateTimeToTimestamp';
    const modalBody = document.getElementById('modalBody');
    modalBody.innerHTML = `
        <div class="input-group">
            <label for="dateTimeValue">日期时间:</label>
            <input type="text" id="dateTimeValue" placeholder="例如: 2024-01-01 或 2024-01-01 12:00:00">
        </div>
        <div style="margin-top: 10px; font-size: 12px; color: #6c757d;">
            <i class="fas fa-info-circle"></i> 支持格式: yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss
        </div>
    `;
    
    document.getElementById('modalTitle').textContent = '日期转时间戳';
    document.getElementById('modalConfirmBtn').onclick = confirmDateTime;
    document.getElementById('paramModal').style.display = 'block';
}

// 确认日期时间转时间戳
function confirmDateTime() {
    const dateTimeValue = document.getElementById('dateTimeValue').value;
    
    if (!dateTimeValue.trim()) {
        showToast('请输入日期时间', 'error');
        return;
    }
    
    // 验证日期时间格式
    const dateTimePattern = /^\d{4}-\d{2}-\d{2}( \d{2}:\d{2}:\d{2})?$/;
    if (!dateTimePattern.test(dateTimeValue.trim())) {
        showToast('日期时间格式错误，支持格式: yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss', 'error');
        return;
    }
    
    fetch('/iotProtocolToolbox/api/convert', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
        },
        body: `operation=dateTimeToTimestamp&input=${encodeURIComponent(dateTimeValue)}`
    })
    .then(response => response.json())
    .then(data => {
        if (data.success) {
            document.getElementById('outputData').value = data.result;
            updateOutputCharCount();
            showToast('日期转时间戳成功', 'success');
        } else {
            showToast(data.error || '操作失败', 'error');
        }
        closeModal();
    })
    .catch(error => {
        showToast('网络错误: ' + error.message, 'error');
        closeModal();
    });
}

// 关闭模态框
function closeModal() {
    document.getElementById('paramModal').style.display = 'none';
}

// 清空输入
function clearInput() {
    document.getElementById('inputData').value = '';
    updateInputCharCount();
    showToast('已清空输入数据', 'success');
}

// 清空输出
function clearOutput() {
    document.getElementById('outputData').value = '';
    updateOutputCharCount();
    showToast('已清空输出数据', 'success');
}

// 复制输出
function copyOutput() {
    const output = document.getElementById('outputData');
    if (!output.value) {
        showToast('没有可复制的内容', 'error');
        return;
    }
    
    output.select();
    output.setSelectionRange(0, 99999); // 移动端兼容
    
    try {
        document.execCommand('copy');
        showToast('已复制到剪贴板', 'success');
    } catch (err) {
        // 备用方案
        navigator.clipboard.writeText(output.value).then(function() {
            showToast('已复制到剪贴板', 'success');
        }, function(err) {
            showToast('复制失败，请手动复制', 'error');
        });
    }
}

// 交换数据
function swapData() {
    const inputData = document.getElementById('inputData');
    const outputData = document.getElementById('outputData');
    
    const temp = inputData.value;
    inputData.value = outputData.value;
    outputData.value = temp;
    
    updateInputCharCount();
    updateOutputCharCount();
    showToast('已交换数据', 'success');
}

// 显示提示信息
function showToast(message, type = 'success') {
    const toast = document.getElementById('toast');
    toast.textContent = message;
    toast.className = 'toast show';
    
    if (type === 'error') {
        toast.classList.add('error');
    }
    
    setTimeout(() => {
        toast.classList.remove('show');
    }, 3000);
}

// 快捷键支持
document.addEventListener('keydown', function(e) {
    // Ctrl+Enter 执行最后一次操作
    if (e.ctrlKey && e.key === 'Enter') {
        if (currentOperation) {
            performOperation(currentOperation);
        }
    }
    
    // Esc 关闭模态框
    if (e.key === 'Escape') {
        closeModal();
    }
});
